package com.sdhs.listmanage.service;


import com.sdhs.listmanage.domain.ManageTreeSelect;
import com.sdhs.listmanage.domain.entity.GcManageList;

import java.util.List;

/**
 * 清单管理Service接口
 * 
 * @author ww
 */
public interface IGcManageListService 
{
	/**
     * 清单导入时，计算字段的值
     * @param manageList
     */
    public void manageListCompute(GcManageList manageList);
	
    /**
     * 查询清单管理
     * 
     * @param id 清单管理主键
     * @return 清单管理
     */
    public GcManageList selectGcManageListById(Long id);

    /**
     * 根据项目id查询清单管理
     *
     * @return 清单管理
     */
    public List<GcManageList> selectGcManageListByProject(Long projectId);

    /**
     * 查询清单树结构信息
     *
     * @return 清单树信息集合
     */
    public List<ManageTreeSelect> selectManageListTreeList(GcManageList gcManageList);

    /**
     * 查询清单管理列表
     * 
     * @return 清单管理集合
     */
    public List<GcManageList> selectGcManageListList(GcManageList gcManageList);

    /**
     * 新增清单管理
     * 
     * @param gcManageList 清单管理
     * @return 结果
     */
    public int insertGcManageList(GcManageList gcManageList);

    /**
     * 修改清单管理
     * 
     * @param gcManageList 清单管理
     * @return 结果
     */
    public int updateGcManageList(GcManageList gcManageList);

    //根据商机id和主办类型查询
    public List<GcManageList> selectGcManageListByBusiness(GcManageList gcManageList);
    //根据商机id和主办类型修改清单
    public int updateByBusinessId(GcManageList gcManageList);
    /**
     * 锁定清单管理
     * */
    public int update(GcManageList gcManageList);

    /**
     * 导入清单管理
     *
     * @param manageList   清单管理列表
     * @param importUser   操作用户
     * @return 结果
     */
    public String importGcManageList(List<GcManageList> manageList,Long projectId, String importUser);

    /**
     * 批量删除清单管理
     * 
     * @param ids 需要删除的清单管理主键集合
     * @return 结果
     */
    public int deleteGcManageListByIds(Long[] ids);

    /**
     * 删除清单管理信息
     * 
     * @param id 清单管理主键
     * @return 结果
     */
    public int deleteGcManageListById(Long id);
    /**根据项目id删除清单信息*/
    public int deleteGcManageListByProjectId(Long projectId);

    boolean isLeafNode(GcManageList gcManageList1);

    List<ManageTreeSelect> buildDeptTreeSelect(List<GcManageList> manageList);
}
